<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="en">
<HEAD>

<meta name="copyright" content="Copyright (c) IBM Corporation and others 2000, 2005. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." >

<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">

<LINK REL="STYLESHEET" HREF="../book.css" CHARSET="ISO-8859-1" TYPE="text/css">
<TITLE>
What is Eclipse?
</TITLE>

<link rel="stylesheet" type="text/css" HREF="../book.css">
</HEAD>
<BODY BGCOLOR="#ffffff">
<H2>
What is Eclipse?</H2>
<P >
 Eclipse is a platform that has been designed from the ground up for building integrated web and application development tooling. By design, the platform does not provide a great deal of
end user functionality by itself. The value of the platform is what it encourages: rapid development of integrated features based on a
<b> plug-in</b> model.</P>
<P >
Eclipse provides a common user interface (UI) model for working with tools.&nbsp; It is designed
to run on multiple operating systems while providing robust integration with
each underlying OS.&nbsp; Plug-ins can program to the Eclipse portable APIs and
run unchanged on any of the supported operating systems.&nbsp;</P>
<P >
At the core of Eclipse is an architecture for dynamic discovery, loading, and running of plug-ins. The
platform handles the logistics of finding and running the right code.  The platform UI provides a standard
user navigation model.&nbsp; Each plug-in can then focus on doing a small number of tasks well. What
kinds of tasks? Defining, testing, animating, publishing, compiling, debugging,
diagramming...the
only limit is your imagination.</P>

<H3>
Open architecture</H3>
<P >
The Eclipse platform defines an open architecture so that each plug-in development team can focus on their 
area of expertise. Let the repository experts build the back ends and the usability experts build the end 
user tools. If the platform is designed well, significant new features and levels of integration can be 
added without impact to other tools.</P>
<P >
The Eclipse platform uses the model of a common workbench to integrate the tools from the end user's point of view. Tools that you develop can
plug into the workbench using well defined hooks called <b>extension points</b>.</P>
<P >
The platform itself is built in layers of plug-ins, each one defining extensions to the extension points of 
lower-level plug-ins, and in turn defining their own extension points for further customization.  This extension 
model allows plug-in developers to add a variety of functionality to the basic tooling platform. The artifacts for each 
tool, such as files and other data, are coordinated by a common platform resource model.</P>
<P >
The platform gives the users a common way to work with the tools, and provides integrated management o
f the resources they create with plug-ins. </P>
<P >Plug-in developers also gain from this architecture.&nbsp; The platform
manages the complexity of different runtime environments, such as different
operating systems or workgroup server environments.&nbsp; Plug-in
developers can focus on their specific task instead of worrying about these
integration issues.</P>



<H3>
Platform structure</H3>
<P >
The Eclipse platform itself is structured as subsystems which are implemented in
one or more plug-ins.&nbsp; The subsystems are built on top of a small runtime engine.
The figure below depicts a simplified view.   </P>

<P >
<img src="images/arch-npi.svg" alt="Platform runtime base with groups of plug-ins adding function" border="0" > </P>

<P >
The plug-ins that make up a subsystem define extension points for adding behavior to the
platform.&nbsp; The following table describes the major runtime components of the platform that
are implemented as one or more plug-ins. </P>

<table border="1" width="100%">
  <tr>
    <td width="29%">

<H4>
Platform runtime</H4>
    </td>
    <td width="71%">Defines the extension point and plug-in model. It dynamically 
      discovers plug-ins and maintains information about the plug-ins and their extension points 
      in a platform registry.
      Plug-ins are started up when required according to user operation of the
      platform.  The runtime is implemented using the OSGi framework.</td>
  </tr>
  <tr>
    <td width="29%">
<H4>Resource management (workspace)</H4>
    </td>
    <td width="71%">Defines API for creating and managing resources (projects,
      files, and folders) that are produced by tools and kept in the file system.</td>
  </tr>
  <tr>
    <td width="29%">
<H4>
Workbench UI</H4>
    </td>
    <td width="71%">Implements the user cockpit for navigating the platform. It defines extension points for adding UI components such as views or menu actions.&nbsp;
      It supplies additional toolkits (JFace and SWT) for building user
      interfaces. The UI services are structured so that a subset of the UI plug-ins can be used to build rich client applications that are
      independent of the resource management and workspace model.  IDE-centric plug-ins define additional functionality for 
      navigating and manipulating resources.</td>
  </tr>
  <tr>
    <td width="29%">


<H4>
Help system</H4>
    </td>
    <td width="71%">Defines extension points for plug-ins to provide help or
      other documentation as browsable books.</td>
  </tr>
  <tr>
    <td width="40%">


<H4>Team support</H4>
    </td>
    <td width="60%">Defines a team programming model for managing and versioning resources.&nbsp;</td>
  </tr>
  <tr>
    <td width="40%">


<h4>Debug support</h4>
    </td>
    <td width="60%">Defines a language independent debug model and UI classes
      for building debuggers and launchers.</td>
  </tr>
  <tr>
    <td width="40%">
  
<h4>Other utilities</h4>
    </td>
    <td width="60%">Other utility plug-ins supply functionality such as searching and comparing resources, performing builds using XML configuration files,
    and dynamically updating the platform from a server.</td>
  </tr>
</table>



<H3>
Out of the box</H3>
<P >
Out of the box - or off the web - the basic platform is an integrated development environment (IDE) for anything (and nothing in particular). </P>
<P >
<img src="images/emptyworkbench.png" alt="Workbench window" border="0"></P>
<P >
It's the plug-ins that determine the ultimate functionality of the platform.&nbsp;
That's why the Eclipse SDK ships with additional plug-ins to enhance the
functionality of the SDK.</P>
<P >
Your plug-ins can provide support for editing and manipulating additional types of
resources such as Java files, C programs, Word documents, HTML pages, and JSP files.</P>


</BODY>
</HTML>
